﻿using Search4.Domain.Entity;
using Search4.Domain.Repository;
using System;
using System.Web.UI.WebControls;

namespace Search4.Web.View.Cadastro
{
    public class CadastroUsuario : System.Web.UI.Page
    {
        #region CONTROLES
        public TextBox txbLogradouro { get; set; }
        public TextBox txbNumero { get; set; }
        public TextBox txbCEP { get; set; }
        public TextBox txbComplemento { get; set; }
        public TextBox txbBairro { get; set; }
        public TextBox txbCidade { get; set; }
        public DropDownList ddlUF { get; set; }
        public TextBox txbNome { get; set; }
        public TextBox txbCPF { get; set; }
        public TextBox txbTelefone { get; set; }
        public TextBox txbEmail { get; set; }
        public TextBox txbSenha { get; set; }
        public Button btnCadastrar { get; set; }
        #endregion

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            VerificaSeUsuarioEstaLogado();
            ConfigurarPagina();
        }

        private void ConfigurarPagina()
        {
            btnCadastrar.Click += btnCadastrar_Click;
        }

        private void VerificaSeUsuarioEstaLogado()
        {
            var lbtPainel = (LinkButton)Master.FindControl("lbtPainel");
            var lblSeparador = (Label)Master.FindControl("lblSeparador");
            var lbtCadastro = (LinkButton)Master.FindControl("lbtCadastro");
            var lblWelcome = (Label)Master.FindControl("lblWelcome");
            var lbtLogin = (LinkButton)Master.FindControl("lbtLogin");
            var lbtLogout = (LinkButton)Master.FindControl("lbtLogout");
            var usuarioLogado = Session["USUARIO"] != null ? true : false;
            if (usuarioLogado)
            {
                lbtLogin.Visible = false;
                lbtCadastro.Visible = false;
                lbtLogout.Visible = true;
                lblWelcome.Visible = true;
                lbtPainel.Visible = true;
                lblSeparador.Visible = true;
            }
            else
            {
                lbtLogin.Visible = true;
                lbtCadastro.Visible = true;
                lbtLogout.Visible = false;
                lblWelcome.Visible = false;
                lbtPainel.Visible = false;
                lblSeparador.Visible = false;
            }
        }

        void btnCadastrar_Click(object sender, EventArgs e)
        {
            var usuario = PopulaEntidadeUsuario();

            var usuarioRepository = new UsuarioRepository();
            Boolean erro = false;
            try
            {
                usuarioRepository.Salvar(usuario);
            }
            catch
            {
                erro = true;
            }

            if (!erro)
            {
                Page.RegisterStartupScript(",", "<script>alert('Cadastro efetuado com sucesso')</script>");
                Response.Redirect("Login.aspx");
            }
            else 
            {
                Page.RegisterStartupScript(",", "<script>alert('Ocorreu um erro no cadastro')</script>");
            }
        }

        private Usuario PopulaEntidadeUsuario()
        {
            var endereco = new Endereco();
            endereco.Logradouro = txbLogradouro.Text;
            endereco.Numero = txbNumero.Text;
            endereco.CEP = txbCEP.Text;
            endereco.Complemento = txbComplemento.Text;
            endereco.Bairro = txbBairro.Text;
            endereco.Cidade = txbCidade.Text;
            endereco.UF = ddlUF.SelectedItem.Value;

            var enderecoRepository = new EnderecoRepository();
            enderecoRepository.Salvar(endereco);

            var usuario = new Usuario();
            usuario.Nome = txbNome.Text;
            usuario.CPF = txbCPF.Text;
            usuario.Telefone = txbTelefone.Text;
            usuario.Email = txbEmail.Text;
            usuario.Senha = Convert.ToInt32(txbSenha.Text);
            usuario.Endereco = endereco;
            return usuario;
        }
    }
}
